package com.wwu.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wwu.common.web.ResultObj;
import com.wwu.common.web.ResultPage;
import com.wwu.system.entity.SysParam;
import java.util.List;

/**
 * 参数配置服务接口类
 * @author 一蓑烟雨
 * @date 2023/5/31 9:34
 */
public interface ISysParamService extends IService<SysParam> {

    /**
     * 分页查询参数配置
     * @param pageNum  页码
     * @param pageSize  每页数量
     * @param sysParam 参数配置实体
     * @return com.wwu.common.web.ResultPage<com.wwu.system.entity.SysParam>
     * @author 一蓑烟雨
     * @date 2023/7/1 11:29
     */
    ResultPage<SysParam> getParamListPage(Integer pageNum, Integer pageSize, SysParam sysParam);

    /**
     * 根据参数键获取参数配置
     * @param paramKey  参数键
     * @return com.wwu.system.entity.SysParam
     * @author 一蓑烟雨
     * @date 2023/7/1 11:04
     */
    SysParam getParamByKey(String paramKey);

    /**
     * 根据参数名获取参数配置
     * @param paramName  参数名
     * @return com.wwu.system.entity.SysParam
     * @author 一蓑烟雨
     * @date 2023/7/1 11:04
     */
    SysParam getParamByName(String paramName);

    /**
     * 添加参数配置
     * @param sysParam 参数配置
     * @author 一蓑烟雨
     * @date 2023/8/11 8:55
     */
    void saveParam(SysParam sysParam);

    /**
     * 更新参数配置
     * @param sysParam 参数配置
     * @return com.wwu.common.web.ResultObj
     * @author 一蓑烟雨
     * @date 2023/5/30 18:10
     */
    ResultObj updateParam(SysParam sysParam);

    /**
     * 更新参数配置状态
     * @param paramKey 参数key
     * @param paramStatus  参数配置状态
     * @author 一蓑烟雨
     * @date 2023/8/11 9:15
     */
    void updateParamStatus(String paramKey, Integer paramStatus);

    /**
     * 删除参数配置
     * @param paramKeys  参数key集合
     * @author 一蓑烟雨
     * @date 2023/8/11 10:00
     */
    void deleteParam(List<String> paramKeys);

    /**
     * 查询参数配置，在项目启动时加载
     * @return com.wwu.common.web.ResultObj
     * @author 一蓑烟雨
     * @date 2023/7/20 16:14
     */
    ResultObj sysParamCache();
}
